package com.shiyi.shiyiaiagent.rag;

import org.springframework.ai.chat.client.advisor.RetrievalAugmentationAdvisor;
import org.springframework.ai.chat.client.advisor.api.Advisor;
import org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.ai.vectorstore.filter.Filter;
import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder;

/**
 * 创建自定义RAG检索增强工厂
 */
public class LoveAppCustomAdvisorFactory {

  public static Advisor createLoveAppRagCustomAdvisor(VectorStore vectorStore,String status){
    Filter.Expression expression = new FilterExpressionBuilder().eq("status", status).build();
    VectorStoreDocumentRetriever documentRetriever = VectorStoreDocumentRetriever.builder().vectorStore(vectorStore)
      .filterExpression(expression) //过滤条件
      .similarityThreshold(0.5) //相似度阈值
      .topK(3) //返回文档数量
      .build();
    return RetrievalAugmentationAdvisor.builder()
      .documentRetriever(documentRetriever)
      .queryAugmenter(LoveAppContextualQueryAugmenterFactory.create())
      .build();
  }
}
